// Author: Bjorn Schobben

#ifndef COLOR_H
#define COLOR_H


class Color
{
public:
	//Constructors
	Color(int color = NOCOLOR); // default is an erased color
	Color(const Color& rhs);

	//Destructor
	virtual ~Color();
	
	//Functions to manipulate the color value
	int GetColorValue() const;
	virtual void SetColor(const Color& newColor);
	virtual void SetColorValue(int color);

	// Set color to a "invalid color" color
	void EraseColor();
	
	//Operations to return the RGB-code of the color color
	int GetRed() const;
	int GetGreen() const;
	int GetBlue() const;

	//Operations to set the RGB-code of the color
	void SetRed(int red);
	void SetGreen(int green);
	void SetBlue(int blue);
	
	// Test if color is real
	bool IsColor() const;

	//Overloaded operators
	Color& operator=(const Color& rhs);
	bool operator==(const Color& rhs) const;
	bool operator!=(const Color& rhs) const;
protected:
	static const int NOCOLOR = -1;

private:
	//The rgb value of the color
	int color;

};

#endif //COLOR_H
